package com.java.common.validate;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.util.HashSet;

/**
 * 实现对应的接口ConstraintValidator<A extends Annotation, T>，参数1：自定义注解，参数2：需要验证的类型
 *
 * 该例中判断标注的内容是否在指定范围内，
 * 如：在entity属性上标注我们自定义的注解
 * @ListValue(value={0,1})
 * private Integer showStatus;
 *
 * 进入该方法内部，initialize初始化获得注解值，isValid判断是否在指定范围内
 */
public class ListValueConstraintValidator implements ConstraintValidator<ListValue,Integer> {
    HashSet<Integer> set = new HashSet<Integer>();

    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {
        return set.contains(value);
    }

    @Override
    public void initialize(ListValue constraintAnnotation) {
        int[] value = constraintAnnotation.value();
        for(int v : value){
            set.add(v);
        }
    }
}
